//封装axios 请求 框架 , 专门发送axios请求,

//导入axios
import axios from 'axios'

/**
 * 创建一个axios 实例
 */

// {{ (第一种方式) }}
//传入config的同时 , 再传入两个回调函数 , 把成功的数据 , 和失败的异常 , 返回出去
// export function instance(config, success, failure) {
// //    1 : 创建一个axios实例
//     const instance = axios.created({
//         //请求的url
//         baseURL: '#',
//         timeout: 5000
//     })
//
// //    发送正在的网络请求
//     instance(config)
//         .then(res => {
//             //    返回成功的数据
//             success(res)
//
//         })
//         .catch(err => {
//             //    返回失败的异常
//             failure(err)
//         })
//
// }

// {{ (第三种方式 , 最常用的方式) }}
export function request1(config) {
    return new Promise((resolve, reject) => {
        //    1 : 创建一个axios实例
        const instance = axios.create({
            //请求的url
            baseURL: 'http://152.136.185.210:8000',
            timeout: 5000
        })

//    发送正在的网络请求
        instance(config)
            .then(res => {
                //    返回成功的数据
                resolve(res)
            })
            .catch(err => {
                //    返回失败的异常
                reject(err)
            })
    })
}

// {{ (第四种方式 , 最简介的方式) }}
export function request(config) {
//    1 : 创建一个axios实例
    const instance = axios.create({
        //请求的url
        baseURL: 'http://152.136.185.210:8000',
        timeout: 5000
    })
    axios.interceptors.response.use()

//    3 : 发送正在的网络请求
    return instance(config)

}

//====================================
// {{ (第四种方式 , 最简介的方式) }}
export function request2(config) {
//    1 : 创建一个axios实例
    const instance = axios.create({
        //请求的url
        baseURL: 'http://152.136.185.210:8000',
        timeout: 5000
    })
    // 2 : 配置 axios拦截器
    // 请求
    axios.interceptors.request.use(config => {
            //请求成功
            console.log(config);
            // 1 : 比如说config中的一下信息 , 不符合服务器的要求
            // 2 ; 比如每次发送网络请求时 , 都会在界面中显示一个请求的图标
            // 3 : 某些网络请求 ,(比如token) , 必须携带一些特殊的数据
            return config;
            //    请求失败
        }, error => {
            console.log(error);
        }
    ),
        //响应
        axios.interceptors.response.use(res => {
            console.log(res);
            //把数据 , 返回出去 , 交到别人处理
            return res.data;
        }, err => {
            console.log(err);
        })

//    3 : 发送正在的网络请求
    return instance(config)

}

